<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>then的链式调用</title>
  </head>
  <body>
    <!-- 
      Promise实例.then（）返回的是一个【新的Promsie实例】，它的值和状态由什么决定？
        1、简单表达： 由then所指定的回调函数执行的结果决定
        2、详细表达：
          （1）如果then所指定的回调返回的是非Promise值a：
                那么【新的Promsie实例】状态为：成功（fulfilled），成功的value为a
          （2）如果then所指定的回调返回的是Promise实例p：
                那么【新的Promsie实例】状态、值，都与p一致
          （3）如果then所指定的回调抛出异常：
                那么【新的Promsie实例】状态为rejected，reason为抛出的那个异常
     -->
    <script>
      const p = new Promise((resolve, reject) => {
        resolve(20)
      })
      // const x = p.then(
      p.then(
        (value) => {
          console.log('成功了1', value)
          // return 900
          // return Promise.reject('900')
          return Promise.resolve('a')
        },
        (reason) => {
          console.log('失败了1', reason)
        }
      )
        .then(
          (value) => {
            console.log('成功了2', value)
            return false
          },
          (reason) => {
            console.log('失败了2', reason)
          }
        )
        .then(
          (value) => {
            console.log('成功了3', value)
            return true
          },
          (reason) => {
            console.log('失败了3', reason)
          }
        )
        .then(
          (value) => {
            console.log('成功了4', value)
          },
          (reason) => {
            console.log('失败了4', reason)
          }
        )
    </script>
  </body>
</html>
